package pl.edu.pw.polygen.modeler.client.workspace;

import java.util.List;

import org.vaadin.gwtgraphics.client.DrawingArea;

import pl.edu.pw.polygen.modeler.client.object.IPolygenObject;
import pl.edu.pw.polygen.modeler.client.workspace.listener.IWorkspaceListener;

public interface IWorkspace {
	public int getId();
	
	public void setSelectable();
	
	public void setMergeable();
	
	public void setLocked();
	
	public void unselectAll();
	
	public void dropAll();
	
	public boolean isMouseDownCatch();
	
	public void setMouseDownCatch(boolean value);
	
	public void setWorkspaceListener(IWorkspaceListener listener);
	
	public DrawingArea getCanvas();
	
	public int getMouseX();
	
	public int getMouseY();
	
	public IPolygenObject getHolded();
	
	public IPolygenObject getSelected();
	
	public void addToHolded(IPolygenObject polygenObject);
	
	public void removeFromHolded(IPolygenObject o);
	
	public void addToSelected(IPolygenObject o);
	
	public void removeFromSelected(IPolygenObject o);
	
	public void add(IPolygenObject o);
	
	public boolean contains(IPolygenObject o);
	
	public void remove(IPolygenObject o);
	
	public void showProperties(IPolygenObject o);
	
	public void showProperties(List<IPolygenObject> oList);
	
	public void setHolded(boolean holded);
	
	public boolean isHolded();
	
	public void shiftTo(int dx, int dy);
	
	public void shiftSelectedObjects(int dx, int dy);

	public void zoom(int delta);
	
	public void setBoundariesVisibility(boolean boundariesVisibility);
	
	public boolean getBoundariesVisibility();

	public void setSelected(boolean value);
	
	public boolean isSeleceted();

	public void selectObjects(int x1, int y1, int x2, int y2);
	
	public void setMoveable(boolean value);
	
	public void catchMouseClickedPosition();
}
